package cn.sccdlg.webmagic.test;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.pipeline.FilePipeline;
import us.codecraft.webmagic.processor.PageProcessor;

import java.io.File;

/**
 * @author RaoShuang
 * @emil 991207823@qq.com
 * @date 2020/11/29 20:32
 * WebMagic之抽取元素Selectable
 *  抓取淘宝首页信息
 */
public class JobProcessor2 implements PageProcessor {

    /**
     * 解析页面
     * @param page
     */
    public void process(Page page) {
//        System.out.println(page.getHtml());
//        System.out.println("------------------------");
        //解析返回的数据page，并把解析的结果放入到ResultItems中
        //1、使用XPath解析
        page.putField("div", page.getHtml().xpath("//div[@data-spm-ab=fline]/a"));
        //2、使用css选择器解析
        page.putField("div2", page.getHtml().css("div.site-nav-menu-bd.site-nav-menu-list div a").all());
        //3、使用正则表达式解析
        page.putField("div3", page.getHtml().css("div.site-nav-menu-bd.site-nav-menu-list div a")
                .regex(".*宝贝.*").all());

        //处理结果的API
        page.putField("div4", page.getHtml().css("div.site-nav-menu-bd div a")
                .regex(".*宝贝.*").get());
        page.putField("div5", page.getHtml().css("div.site-nav-menu-bd div a")
                .regex(".*宝贝.*").toString());

        // 获取超链接
        page.addTargetRequests(page.getHtml().css("div.search-hots-lines div a").links()
                .regex(".*q=连衣裙.*").all());
        page.putField("url", page.getHtml().css("div.logo h1 a").all());
    }

    private Site site = Site.me()
            .setCharset("UTF-8") //设置编码
            .setTimeOut(10000)   // 设置超时时间，单位毫秒
            .setRetrySleepTime(3000) // 设置重试的间隔时间
            .setSleepTime(3)     // 设置抓取间隔时间
            .setRetryTimes(3);   // 设置重试次数

    public Site getSite() {
        return site;
    }

    /**
     * 主函数，执行爬虫
     */
    public static void main(String[] args) {
        File file = new File("D:\\Users\\HASEE\\DemoProject\\crawler-project\\crawler-webmagic\\data");
        if (!file.exists()) {
            file.mkdirs();
        }
        Spider.create(new JobProcessor2())
                .addUrl("https://www.taobao.com/") //设置爬取数据的url
                .addPipeline(new FilePipeline(file.getPath())) //将结果保存到外部文件
                .thread(5) //设置5个线程处理
                .run(); //执行爬虫
    }
}
